package org.example.sword2offer.primary;

/**
 * @author: lynn
 * @Descript: leetcode 11 https://leetcode-cn.com/problems/container-with-most-water/
 * 给你 n 个非负整数 a1，a2，...，an，每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线，垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。
 * 找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水
 * @date: 2021/6/16 19:47
 * @version: 1.0
 */
public class Q71_ArrayMostWater {

    /**
     * max water
     * @param height int整型一维数组 the array
     * @return long长整型
     */
    public static long maxWater (int[] height) {
        if(height.length <=2) return 0;//小于两根柱子
        int i=0;//左指针
        int j=height.length-1;//右指针
        int maxArea=0;
        while (i<j){
            int area=Math.min(height[i],height[j])*(j-i);
            if (height[i]>height[j]){ //说明右边的柱子更短，往左移动
                j--;
            }else {
                i++;
            }
            maxArea=Math.max(area,maxArea);
        }
        return maxArea;
    }
    public static void main(String[] args) {
        int[] arr={1,8,6,2,5,4,8,3,7};
        System.out.println(maxWater(arr));//fixme 49
    }
}
